package vista;



import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

import modelo.Servicio;

import controlador.TelefoniaMovil;

public class AgregarServicioPlanPrepago extends JFrame {
	/**
	 * 
	 */
	private TelefoniaMovil tm;
	private JTable tabla;
	private JScrollPane scrollPane;
	private JButton agregarButton;
	private JButton cancelarButton;
	private JButton guardarButton;
	private JLabel cantidad;
	private JLabel costoAdicional;
	
	private JTextField cantidadTxt;
	private JTextField costoAdicionalTxt;
	private String nombrePlan;
	
	private Vector<Float> cantidades;
	private Vector<Float> costosAdicionales;
	private Vector<Servicio> servicios;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ListarUsuario mu = new ListarUsuario();
		mu.setVisible(true);
	}
	
	public AgregarServicioPlanPrepago(TelefoniaMovil tm) {
		
		this.tm = tm;
		initGUI("");
		
	}
	
	public AgregarServicioPlanPrepago(TelefoniaMovil tm, String nombre) {
		
		nombrePlan = nombre;
		cantidades= new Vector<Float>();
		costosAdicionales= new Vector<Float>();	
		servicios = new Vector<Servicio>();
		this.tm = tm;
		initGUI(nombre);
	
		
	}
	

	public AgregarServicioPlanPrepago() {
		
		initGUI("");
		
	}
	
	
	public void validarNumero(java.awt.event.KeyEvent evt){
    	int caracter=(int)evt.getKeyChar();
       	
    	if(((caracter < '0') || (caracter > '9')) && (caracter != java.awt.event.KeyEvent.VK_BACK_SPACE) && caracter != '.')
    	{
	    	evt.consume();
	    	JOptionPane.showMessageDialog(null,"No puede ingresar letras!!!","Ventana Error Datos",JOptionPane.ERROR_MESSAGE);
    	}
    	
	}
	
//	private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                    
//		 
//	    String ele = txtElemento.getText();
//	 
//	    for (int i = 0; i < tbComponentes.getRowCount(); i++) {
//	           if (tbComponentes.getValueAt(i, 1).equals(ele)) {                                          
//	                  tbComponentes.changeSelection(i, 1, false, false);
//	                  break;
//	           }
//	    }
//	}

	
	
	public void llenarTabla(){
		Vector servicios = tm.obtenerServicio();
		
		Vector columnas = new Vector();
		columnas.add("Id");
		columnas.add("Nombre");
		columnas.add("Unidad");
		columnas.add("Precio");
			
		tabla = new JTable(servicios, columnas);
		scrollPane = new JScrollPane(tabla);
		scrollPane.setBounds(14, 14, 350, 189);
		getContentPane().add(scrollPane);
		
	}
	
	private void initGUI(String nombre) {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			
			llenarTabla();
			
			cantidad =  new JLabel();
			cantidad.setText("Cantidad:");
			cantidad.setBounds(20, 210, 60, 28);
			getContentPane().add(cantidad);
			
			
			costoAdicional =  new JLabel();
			costoAdicional.setText("Costo Adicional:");
			costoAdicional.setBounds(20, 240, 150, 28);
			getContentPane().add(costoAdicional);
			
			cantidadTxt =  new JTextField("0");
			cantidadTxt.setBounds(150, 210, 60, 28);
			getContentPane().add(cantidadTxt);
			cantidadTxt.addKeyListener(new java.awt.event.KeyAdapter() {
	            public void keyTyped(java.awt.event.KeyEvent evt) {
	            	validarNumero(evt);
	            }
	        });

			costoAdicionalTxt =  new JTextField("0");
			costoAdicionalTxt.setBounds(150, 240, 60, 28);
			getContentPane().add(costoAdicionalTxt);
			costoAdicionalTxt.addKeyListener(new java.awt.event.KeyAdapter() {
	            public void keyTyped(java.awt.event.KeyEvent evt) {
	            	validarNumero(evt);
	            }
	        });
			
			
			
			agregarButton =  new JButton();
			agregarButton.setText("Agregar");
			agregarButton.setBounds(260, 240, 90, 28);
			getContentPane().add(agregarButton);
			agregarButton.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent evt) 
				{
					int registro = tabla.getSelectedRow();
					if (registro == -1){
						JOptionPane.showMessageDialog(null, "Debe Selccionar un Servicio para Agregar", "Agregar Servicio", JOptionPane.ERROR_MESSAGE);
					}else{
						int idServicio =  (Integer) tabla.getValueAt(registro, 0);
						Servicio servicio = tm.buscarServicio(idServicio);
						servicios.add(servicio);
						cantidades.add(Float.parseFloat(cantidadTxt.getText()));
						costosAdicionales.add(Float.parseFloat(costoAdicionalTxt.getText()));
						DefaultTableModel modelo=(DefaultTableModel) tabla.getModel();
						modelo.removeRow(tabla.getSelectedRow());
						cantidadTxt.setText("0");
						costoAdicionalTxt.setText("0");
						JOptionPane.showMessageDialog(null, "Servicio Agregado", "Agregar Servicio", JOptionPane.INFORMATION_MESSAGE);
					}
				 
				}
			});
			
			guardarButton =  new JButton();
			guardarButton.setText("Guardar");
			guardarButton.setBounds(100, 300, 90, 30);
			getContentPane().add(guardarButton);
			guardarButton.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent evt) 
				{
					boolean crear = tm.crearPlanPrepago(nombrePlan, servicios, cantidades, costosAdicionales);
					if (crear){
						JOptionPane.showMessageDialog(null, "Se creo el Plan satisfactoriamente", "Alta Plan", JOptionPane.INFORMATION_MESSAGE);
						dispose();
					}else
						JOptionPane.showMessageDialog(null, "Error al intentar guardar los servicios", "Agregar Servicio", JOptionPane.ERROR_MESSAGE);	
					
				}
			});
			
			
			
			cancelarButton =  new JButton();
			cancelarButton.setText("Cancelar");
			cancelarButton.setBounds(230, 300, 90, 30);
			getContentPane().add(cancelarButton);
			cancelarButton.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent evt) 
				{
					dispose();
				}
			});
			setTitle("Agregar Servicio");
			pack();
			this.setSize(400, 400);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

